
class FileStream{
    init(){
        print("open file...")
    }
    
    func process(){
        print("process file...")
    }
    
    deinit{
        print("close file...")
    }
}

class MyClass{
    var myFile:FileStream?
    
    init(myFile: FileStream?){
        self.myFile=myFile
    }
    
  
    
}

func invoke(file: FileStream?){
    file!.process()
}


var fs:FileStream?

fs=FileStream() //引用计数:1

fs!.process()


var fs2=fs  //引用计数:2
var data=100





var mc: MyClass?
mc = MyClass(myFile:nil)
mc!.myFile=fs //引用计数:3

//调用时引用计数+1 : 4
invoke(fs)
//函数结束引用计数-1 : 3


if data>0 {
    var fs3=fs //引用计数:4
} //fs3生存周期结束，引用计数-1: 3

fs=nil //引用计数:2
fs2=nil//引用计数:1
//mc!.myFile=nil
mc=nil //引用计数:0









